home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr46 / strx221.zip / README < prev    next >
Text File  |  1993-05-18  |  10KB  |  258 lines

  1. Copyright (c) 1993 by Roy S. Woll 
  2.  
  3. Class "str", Version 2.2    5/16/93
  4.  
  5. You may distribute and sell any executable which results from using this code
  6. in your applications.  You may redistribute this source freely as long as you
  7. leave all files in their original form, including the copyright notice as is.
  8. You may NOT include any SOURCE code of this software with any program that is
  9. sold. 
  10.  
  11. I would sincerely welcome any comments/criticism/ideas you might have about
  12. the str or the regular expression class.
  13.  
  14.  
  15. Registration:
  16. -------------
  17. If you decide to use this product, you need to register by one of the 
  18. following two methods.
  19.  
  20.    Online-registration:
  21.    --------------------
  22.  
  23.    You can also register strX directly on Compuserve by going to 
  24.    the SHAREWARE REGISTRATION section and looking for the product 
  25.    strX (Registration ID 925)
  26.  
  27.  
  28.    Mail
  29.    ----
  30.  
  31.    Register by sending $15.00 to 
  32.    Roy S. Woll, 1032 Summerplace Dr., San Jose, CA 95122.  
  33.  
  34.  
  35. By registering you will receive an enhanced version of the class, and 
  36. more extensive documentation.
  37.  
  38.  
  39. Support:
  40. --------
  41.  
  42.            ------------------------------------------
  43.            |                                        |
  44.            | Roy S. Woll                            |
  45.            | 1032 Summerplace Dr.                   |
  46.            | San Jose, CA 95122                     |
  47.            |                                        |
  48.            | CompuServe : 76207,2541                |
  49.            |                                        |
  50.            | Phone: (408) 778-2000 x4518  (day)     |
  51.            |        (408) 293-5893        (evening) |
  52.            |                                        |
  53.            ------------------------------------------
  54.  
  55.  
  56. In addition those of you who register will receive a more powerful
  57. version of the regular expression class that includes context-sensitive
  58. regular expressions.  For instance you will easily be able to search or 
  59. replace a specific portion (flagged by '@') of a regular expression.
  60.  
  61.             
  62.             regX employeeX("Pay to the order of @[A-Za-z\\s]+$");
  63.             str paycheck("Payroll\nPay to the order of Roy S. Woll\n$50,000");
  64.             str employee;
  65.  
  66.             paycheck.search(employeeX,  &employee); 
  67.             paycheck.replace(employeeX,  "a lucky person");
  68.  
  69.        //
  70.        // After executing the above code, employee will contain the
  71.        // name of the person following the text "Pay to the order of ".
  72.        //
  73.        // employee = "Roy S. Woll"
  74.        // paycheck = "Payroll\nPay to the order of lucky person\n$50,000"
  75.        //   
  76.  
  77.  
  78. ------------------------------------------------------------------------------
  79.  
  80.           FILES:  THE FOLLOWING FILES ARE INCLUDED.
  81.  
  82.           str.doc        Documentation file for str class.
  83.  
  84.           str.h          Interface file for str class
  85.           regX.h         Interface file for regular expression class
  86.           regXimp.h      Interface file used only for implementation of regX
  87.           dynstream.h    Interface file for dynstream class
  88.           bcstr.h        Interface file for BCstr class.  BCstr is compatible
  89.                          with the Borland object-based container classes.
  90.                          It is derived from str.
  91.  
  92.           str.cpp        Implementation file for str class
  93.           regX.cpp       Implementation file for regular expression class
  94.           dynstream.cpp  Implementation file for dynstream class
  95.           match.cpp      Regular expression compiling and searching routines
  96.           strsearch.cpp  Member functions relating to search/replace
  97.           bcstr.cpp      Implementation file for BCstr class
  98.           strcmp.cpp     Non-ansi string routines used by str class.  Add
  99.                          this to your library if your system does not have
  100.                          these (stricmp, strnicmp, strupr, strlwr).
  101.  
  102.           grep.cpp       Demo program for "str" class, supporting 
  103.                          file searching of regular expression matches.
  104.                          Supports wildcard file specifications, case 
  105.                          sensitivity, line numbers, etc.)
  106.  
  107.           makefile       This program defines how to build str.lib
  108.           readme         Brief overview
  109.  
  110.  
  111. ------------------------------------------------------------------------------
  112.  
  113. INSTALLATION AND USE:  
  114. ---------------------
  115.  
  116.             STR.LIB
  117.             -------
  118.             Type "make" to compile the source and create a library called
  119.             str.lib   If you wish to place the object files in your own 
  120.             library, insert the .obj files into your library.  You may 
  121.             also want to place "str.h", and "regular.h" into your default 
  122.             include path.  Bcstr.h is provided for those who wish to use 
  123.             the Borland object-based container classes to store str's.
  124.  
  125.             If you are using Turbo C++ instead of Borland C++, edit the
  126.             makefile and substitute "TCC" for "BCC".
  127.  
  128.             Unix, Vax-Vms, and some other systems may also need to add
  129.             strcmp.obj to the library.  This module defines non-ansi string 
  130.             routines used by str class.  Add this to your library if your 
  131.             system does not have these (stricmp, strnicmp, strupr, strlwr).
  132.  
  133.  
  134.             GREP
  135.             ----
  136.             Type "make grep" to create the executable for grep.  
  137.             Grep is included as a demonstration program for the str class.
  138.             It supports searching of literal and regular expression 
  139.             within files.  Wildcard file specifications, case sensitivity,
  140.             line numbers, etc. are all supported.  The implementatin uses 
  141.             only around 1 page of code, which demostrates how natural coding 
  142.             is when using the regular expression capabilities of the string 
  143.             class.  
  144.  
  145.  
  146.             UPGRADING
  147.             ---------
  148.             If you are upgrading from version 1, then you will need to
  149.             recompile all .cpp files that use the str class.  This must be
  150.             done since str.h has changed.  You also will need to change
  151.             occurances of pad or strip to use the global versions.  This must
  152.             be done since the member functions pad and strip now modify their
  153.             object.  See section "Whats changed in 2.00".
  154.  
  155.  
  156.             USING
  157.             -----
  158.             You will need to include <str.h>, "str.h" in order to use class
  159.             str.  If you also wish to use regular expressions include
  160.             <regX.h>, "regX.h".  Header files "dynstream.h" and
  161.             "regximp.h" are strictly for implementation. and as such are
  162.             separated into other header file.  You should never reference them
  163.             unless you wish to modify their implementation, or derive a new
  164.             class from them.
  165.  
  166.             
  167. ------------------------------------------------------------------------------
  168.  
  169. WHATS DIFFERENT ABOUT VERSION 2.0 - 2.2
  170. ---------------------------------------
  171.  
  172.  
  173.           WHATS DIFFERENT ABOUT VERSION 2.2
  174.           ---------------------------------
  175.  
  176.           Fixed substr assignment problem.  -->  str = substr
  177.           Add member function read, lowercase,
  178.           uppercase, and variations of pad and strip.
  179.  
  180.  
  181.           WHATS DIFFERENT ABOUT VERSION 2.1
  182.           ---------------------------------
  183.  
  184.           Version 2.1 extends regular expression support to include context
  185.           sensitive regular expressions.  See section on regular expressions
  186.           for more details.
  187.  
  188.  
  189.           WHATS CHANGED IN 2.12
  190.           ------------------------------
  191.           Fix - substr assignment problem.  -->  str = substr
  192.           Fix - case sensitivity problem, member function index was backwards.
  193.  
  194.  
  195.           WHATS CHANGED IN 2.02 and 2.11
  196.           ------------------------------
  197.           Friend operator >> for reading in strings now directly uses the
  198.           string buffer, so as to remove the 256 character limit.
  199.  
  200.           Grep now supports files in other drives and directories.
  201.  
  202.           Optimizations to efficiency in str::_assign which is used
  203.           by many str member functions.
  204.  
  205.           Regular expression character sets can now contain octal characters.
  206.             
  207.           Fix - Member function "remove" now transfers only necessary 
  208.                 characters.  May have caused Windows application error
  209.                 previously.
  210.  
  211.  
  212.           WHATS CHANGED IN 2.01
  213.           ---------------------
  214.  
  215.            This version supports compatibility with Turbo C++.  Previous
  216.            versions would fail to compile due to Turbo C++'s incorrect
  217.            handling of nested classes.
  218.  
  219.           WHATS NEW IN 2.00
  220.           -----------------
  221.  
  222.            1. Searching and replacing of character strings and regular
  223.               expressions.
  224.  
  225.            2. Case sensitivity now is a property of each instance of str.  All
  226.               searching and comparing for the str instance automatically
  227.               reflects its case sensitivity.  During comparisons between two
  228.               strings, the case sensitivity of the first argument is used.
  229.               Instances of str modify their case sensitivity through member
  230.               functions setCaseSensitive(int).
  231.             
  232.                {
  233.                   str a=("abcd efgh");
  234.                   a.setCaseSensitive(0);     // a is now case insensitive
  235.                   str b=("ABCD EFGH");
  236.                   cout << a.search("efGH");  // "1"   Found
  237.                   cout << b.search("efGH");  // "0"   Not found
  238.             
  239.                   cout << (a==b);             // "1"   Are equal
  240.                   cout << (b==a);             // "0"   Not equal
  241.                } 
  242.  
  243.            3. Miscellaneous optimizations and fixes.
  244.  
  245.  
  246.  
  247.  
  248.           WHATS GONE IN 2.00
  249.           ------------------
  250.             Member function iindex is not directly supported.  Instead use
  251.             member function setCaseSensitive(int) to tell a string instance if
  252.             its searching and comparing should be case sensitive or not.  The
  253.             default is case sensitive.
  254.  
  255.  
  256.  
  257.                
  258.